#include<stdio.h>
//数组
int main()
{
	int a[100][100];
	int i,j,k,n;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		a[i][i]=1;
		a[i][0]=1;
	}
	for(i=2;i<n;i++)
		for(j=1;j<=i-1;j++)
		   a[i][j]=a[i-1][j-1]+a[i-1][j];
	for(i=0;i<n;i++)
	{
        k=3*(n-i-1);
        for(;k>0;k--)
        {
            if(i!=n-1)
            {
                printf(" ");
            }
        }
		for(j=0;j<=i;j++)
        {
            if(j==0)
            {
                printf("%d",a[i][j]);
            }
            else
            {
                printf("%6d",a[i][j]);
            }
        }
        printf("\n");
    }
    return 0;
}
/*不用数组
#include<stdio.h>   
void YangHui0(const int n)
{
	int tmp = 0;
 
	for(int i=1; i<=n; i++)
	{
        for(int t=n-i;t>0;t--)
        {
            if(i!=n)
                printf("   ");
        }
		for(int j=1; j<=i; j++)
		{
			if(j==1)//第一个特殊处理，其他的用公式
			{
				tmp = 1;
			}
			else//公式第n行：第一个值是1，第二个值1*（n-1）/1,第三个值1*（n-1）*(n-2)/2，第四个数为1×(n-1)×（n-2）/2×（n-3）/3…依此类推
			{  
				tmp = tmp*(i-(j-1))/(j-1);//1 3 3 1
			}
            if(j==1)
                printf("%d", tmp);
            else
                printf("%6d",tmp);
        }
        printf("\n");
    }
}
int main()
{
    void YangHui0(const int n);
    int n;
    scanf("%d",&n);
	YangHui0(n);
	return 0;
}*/
